home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / share / pyshared / PIL / FitsStubImagePlugin.py < prev    next >
Text File  |  2006-12-03  |  2KB  |  74 lines

  1. #
  2. # The Python Imaging Library
  3. # $Id: FitsStubImagePlugin.py 2134 2004-10-06 08:55:20Z fredrik $
  4. #
  5. # FITS stub adapter
  6. #
  7. # Copyright (c) 1998-2003 by Fredrik Lundh
  8. #
  9. # See the README file for information on usage and redistribution.
  10. #
  11.  
  12. import Image, ImageFile
  13.  
  14. _handler = None
  15.  
  16. ##
  17. # Install application-specific FITS image handler.
  18. #
  19. # @param handler Handler object.
  20.  
  21. def register_handler(handler):
  22.     global _handler
  23.     _handler = handler
  24.  
  25. # --------------------------------------------------------------------
  26. # Image adapter
  27.  
  28. def _accept(prefix):
  29.     return prefix[:6] == "SIMPLE"
  30.  
  31. class FITSStubImageFile(ImageFile.StubImageFile):
  32.  
  33.     format = "FITS"
  34.     format_description = "FITS"
  35.  
  36.     def _open(self):
  37.  
  38.         offset = self.fp.tell()
  39.  
  40.         if not _accept(self.fp.read(6)):
  41.             raise SyntaxError("Not a FITS file")
  42.  
  43.         # FIXME: add more sanity checks here; mandatory header items
  44.         # include SIMPLE, BITPIX, NAXIS, etc.
  45.  
  46.         self.fp.seek(offset)
  47.  
  48.         # make something up
  49.         self.mode = "F"
  50.         self.size = 1, 1
  51.  
  52.         loader = self._load()
  53.         if loader:
  54.             loader.open(self)
  55.  
  56.     def _load(self):
  57.         return _handler
  58.  
  59.  
  60. def _save(im, fp, filename):
  61.     if _handler is None or not hasattr("_handler", "save"):
  62.         raise IOError("FITS save handler not installed")
  63.     _handler.save(im, fp, filename)
  64.  
  65.  
  66. # --------------------------------------------------------------------
  67. # Registry
  68.  
  69. Image.register_open(FITSStubImageFile.format, FITSStubImageFile, _accept)
  70. Image.register_save(FITSStubImageFile.format, _save)
  71.  
  72. Image.register_extension(FITSStubImageFile.format, ".fit")
  73. Image.register_extension(FITSStubImageFile.format, ".fits")
  74.